<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>x3dcore: renderer.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">x3dcore
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('kernel_2renderer_8c.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">kernel/renderer.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>all kernel renderer interfaces go here.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;logout.h&gt;</code><br/>
<code>#include &lt;algorithm.h&gt;</code><br/>
<code>#include &lt;<a class="el" href="x3d_2renderer_8h.html">x3d/renderer.h</a>&gt;</code><br/>
<code>#include &lt;renderer/renderer.h&gt;</code><br/>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aa967c13175444ce7252e13657a35dfa6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#aa967c13175444ce7252e13657a35dfa6">init_renderer_container</a> (void)</td></tr>
<tr class="memdesc:aa967c13175444ce7252e13657a35dfa6"><td class="mdescLeft">&#160;</td><td class="mdescRight">initialize the global renderer container.  <a href="#aa967c13175444ce7252e13657a35dfa6">More...</a><br/></td></tr>
<tr class="separator:aa967c13175444ce7252e13657a35dfa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dcc2af058c4dd6590c80b2d9437fed6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a0dcc2af058c4dd6590c80b2d9437fed6">free_renderer_container</a> (void)</td></tr>
<tr class="memdesc:a0dcc2af058c4dd6590c80b2d9437fed6"><td class="mdescLeft">&#160;</td><td class="mdescRight">delete the global renderer container.  <a href="#a0dcc2af058c4dd6590c80b2d9437fed6">More...</a><br/></td></tr>
<tr class="separator:a0dcc2af058c4dd6590c80b2d9437fed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd12bce37ec6058f10021b20dabfdd1c"><td class="memItemLeft" align="right" valign="top">uuid_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#abd12bce37ec6058f10021b20dabfdd1c">renderer_container_add</a> (struct renderer *rend)</td></tr>
<tr class="memdesc:abd12bce37ec6058f10021b20dabfdd1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">add in a renderer to the global container.  <a href="#abd12bce37ec6058f10021b20dabfdd1c">More...</a><br/></td></tr>
<tr class="separator:abd12bce37ec6058f10021b20dabfdd1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f03f906a98f6ce0b4d1bc4beb905f07"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a7f03f906a98f6ce0b4d1bc4beb905f07">renderer_container_remove</a> (uuid_t id)</td></tr>
<tr class="memdesc:a7f03f906a98f6ce0b4d1bc4beb905f07"><td class="mdescLeft">&#160;</td><td class="mdescRight">remove the added renderer from the global container.  <a href="#a7f03f906a98f6ce0b4d1bc4beb905f07">More...</a><br/></td></tr>
<tr class="separator:a7f03f906a98f6ce0b4d1bc4beb905f07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac7a4c194187929d9255bd495acf7e2be"><td class="memItemLeft" align="right" valign="top">struct renderer *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#ac7a4c194187929d9255bd495acf7e2be">renderer_container_find</a> (uuid_t id)</td></tr>
<tr class="memdesc:ac7a4c194187929d9255bd495acf7e2be"><td class="mdescLeft">&#160;</td><td class="mdescRight">remove the added renderer from the global container.  <a href="#ac7a4c194187929d9255bd495acf7e2be">More...</a><br/></td></tr>
<tr class="separator:ac7a4c194187929d9255bd495acf7e2be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0401ebc69d541d1bd2501235bd8f7ebe"><td class="memItemLeft" align="right" valign="top">struct renderer *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a0401ebc69d541d1bd2501235bd8f7ebe">create_renderer</a> (enum <a class="el" href="x3d_2renderer_8h.html#a1b6c250767ce4b1f76f25ffc15b2a80b">RENDERER_IDR</a> type)</td></tr>
<tr class="memdesc:a0401ebc69d541d1bd2501235bd8f7ebe"><td class="mdescLeft">&#160;</td><td class="mdescRight">create a renderer.  <a href="#a0401ebc69d541d1bd2501235bd8f7ebe">More...</a><br/></td></tr>
<tr class="separator:a0401ebc69d541d1bd2501235bd8f7ebe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83bf5f5ea65f3431403122e3e5121ddc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a83bf5f5ea65f3431403122e3e5121ddc">free_renderer</a> (struct renderer *rend)</td></tr>
<tr class="memdesc:a83bf5f5ea65f3431403122e3e5121ddc"><td class="mdescLeft">&#160;</td><td class="mdescRight">delete the renderer  <a href="#a83bf5f5ea65f3431403122e3e5121ddc">More...</a><br/></td></tr>
<tr class="separator:a83bf5f5ea65f3431403122e3e5121ddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bfa1091672b700584a6129f5582cc00"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a3bfa1091672b700584a6129f5582cc00">renderer_bind_renderable_context</a> (void *ctx, struct renderer *rend)</td></tr>
<tr class="memdesc:a3bfa1091672b700584a6129f5582cc00"><td class="mdescLeft">&#160;</td><td class="mdescRight">bind a rendererable context with the renderer  <a href="#a3bfa1091672b700584a6129f5582cc00">More...</a><br/></td></tr>
<tr class="separator:a3bfa1091672b700584a6129f5582cc00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44a2f38c6fa52befe988e4c96814d4dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a44a2f38c6fa52befe988e4c96814d4dd">renderer_set_spec</a> (enum RENDER_SPEC_IDR spec, struct renderer *rend)</td></tr>
<tr class="memdesc:a44a2f38c6fa52befe988e4c96814d4dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the type of hardware will be used by the renderer.  <a href="#a44a2f38c6fa52befe988e4c96814d4dd">More...</a><br/></td></tr>
<tr class="separator:a44a2f38c6fa52befe988e4c96814d4dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6317845b652e285dfae06df1b5bb321e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a6317845b652e285dfae06df1b5bb321e">renderer_set_draw_mode</a> (enum DRAW_MODE_IDR draw_mode, struct renderer *rend)</td></tr>
<tr class="memdesc:a6317845b652e285dfae06df1b5bb321e"><td class="mdescLeft">&#160;</td><td class="mdescRight">set the expected draw mode to the renderer.  <a href="#a6317845b652e285dfae06df1b5bb321e">More...</a><br/></td></tr>
<tr class="separator:a6317845b652e285dfae06df1b5bb321e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83867f64e582b941476feed388778a9b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#a83867f64e582b941476feed388778a9b">renderer_update</a> (struct renderer *rend)</td></tr>
<tr class="memdesc:a83867f64e582b941476feed388778a9b"><td class="mdescLeft">&#160;</td><td class="mdescRight">update all the changes to the renderer.  <a href="#a83867f64e582b941476feed388778a9b">More...</a><br/></td></tr>
<tr class="separator:a83867f64e582b941476feed388778a9b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae255442c3e6cdfb9d5193363105f95e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#ae255442c3e6cdfb9d5193363105f95e9">renderer_render</a> (struct renderer *rend)</td></tr>
<tr class="memdesc:ae255442c3e6cdfb9d5193363105f95e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">run the renderer and render all the updated information.  <a href="#ae255442c3e6cdfb9d5193363105f95e9">More...</a><br/></td></tr>
<tr class="separator:ae255442c3e6cdfb9d5193363105f95e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa754010b1022f69bfb6dba9928400f72"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="kernel_2renderer_8c.html#aa754010b1022f69bfb6dba9928400f72">renderer_commit</a> (struct renderer *rend)</td></tr>
<tr class="memdesc:aa754010b1022f69bfb6dba9928400f72"><td class="mdescLeft">&#160;</td><td class="mdescRight">output the rendering result thru the method specified by render_out  <a href="#aa754010b1022f69bfb6dba9928400f72">More...</a><br/></td></tr>
<tr class="separator:aa754010b1022f69bfb6dba9928400f72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>all kernel renderer interfaces go here. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a0401ebc69d541d1bd2501235bd8f7ebe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct renderer* create_renderer </td>
          <td>(</td>
          <td class="paramtype">enum <a class="el" href="x3d_2renderer_8h.html#a1b6c250767ce4b1f76f25ffc15b2a80b">RENDERER_IDR</a>&#160;</td>
          <td class="paramname"><em>type</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>create a renderer. </p>
<p>Note that: once the type of the renderer is attached(it will be attached on its creation), it cannot easily be changed. a call of renderer_retype() can change the type of the renderer, but all the settings formerly applied to that renderer will be lost. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">type</td><td>enum RENDERER_IDR [in] the type of renderer to be created. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>struct renderer* the created renderer. </dd></dl>

</div>
</div>
<a class="anchor" id="a83bf5f5ea65f3431403122e3e5121ddc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_renderer </td>
          <td>(</td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>delete the renderer </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rend</td><td>struct renderer* [in] pointer to the renderer </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="a0dcc2af058c4dd6590c80b2d9437fed6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void free_renderer_container </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname">)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>delete the global renderer container. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">void</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="aa967c13175444ce7252e13657a35dfa6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void init_renderer_container </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname">)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>initialize the global renderer container. </p>
<p>Note that: this operation is <em>NOT</em> thread-safe </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">void</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="a3bfa1091672b700584a6129f5582cc00"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void renderer_bind_renderable_context </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ctx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>bind a rendererable context with the renderer </p>
<p>Note that: renderable context will not be utilized before <a class="el" href="x3d_2renderer_8h.html#a83867f64e582b941476feed388778a9b" title="update all the changes to the renderer. ">renderer_update()</a> is called. therefore, any changes will not apply if they are made after the <a class="el" href="x3d_2renderer_8h.html#a83867f64e582b941476feed388778a9b" title="update all the changes to the renderer. ">renderer_update()</a> call. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ctx</td><td>void* [in] struct renderable_ctx to be sent into. </td></tr>
    <tr><td class="paramname">rend</td><td>struct renderer* [in,out] renderer that the renderable context will bind onto. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="aa754010b1022f69bfb6dba9928400f72"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void renderer_commit </td>
          <td>(</td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>output the rendering result thru the method specified by render_out </p>
<p>Note that: this is an immediate operation. <em>DON'T</em> call <a class="el" href="x3d_2renderer_8h.html#a83867f64e582b941476feed388778a9b" title="update all the changes to the renderer. ">renderer_update()</a> during the function call. any other function call is proper. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rend</td><td>struct renderer* [in] renderer to be specified. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="abd12bce37ec6058f10021b20dabfdd1c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uuid_t renderer_container_add </td>
          <td>(</td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>add in a renderer to the global container. </p>
<p>Note that: only the p_renderer_t(pointer to the struct renderer) is added, but not the content of the structure. nullptr is allowed, but please remember to specify the pointer at some moment of the time. the location address can be found by <a class="el" href="x3d_2renderer_8h.html#ac7a4c194187929d9255bd495acf7e2be" title="remove the added renderer from the global container. ">renderer_container_find()</a>. you may specify the pointer to that address manually. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rend</td><td>struct renderer* [in] pointer to the renderer structure; it can be obtained by create_renderer (). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>uuid_t unique id that identifies the location of that added renderer </dd></dl>

</div>
</div>
<a class="anchor" id="ac7a4c194187929d9255bd495acf7e2be"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct renderer* renderer_container_find </td>
          <td>(</td>
          <td class="paramtype">uuid_t&#160;</td>
          <td class="paramname"><em>id</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>remove the added renderer from the global container. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>uuid_t [in] the unique id of the renderer that has added to the global container formerly. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>struct renderer* nullptr if the given uuid_t id cannot be found, otherwise, will be the pointer to struct renderer. </dd></dl>

</div>
</div>
<a class="anchor" id="a7f03f906a98f6ce0b4d1bc4beb905f07"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void renderer_container_remove </td>
          <td>(</td>
          <td class="paramtype">uuid_t&#160;</td>
          <td class="paramname"><em>id</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>remove the added renderer from the global container. </p>
<p>Note that: the location as well as the content of the struct renderer will be removed. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>uuid_t [in] the unique id of the to-be-remove renderer </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="ae255442c3e6cdfb9d5193363105f95e9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void renderer_render </td>
          <td>(</td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>run the renderer and render all the updated information. </p>
<p>Note that: this is an immediate operation. <em>DON'T</em> call <a class="el" href="x3d_2renderer_8h.html#a83867f64e582b941476feed388778a9b" title="update all the changes to the renderer. ">renderer_update()</a> during the function call. but any other member function call of the renderer class is proper. Also, changes to renderable context and probe class is allowed during this function call. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rend</td><td>struct renderer* [in] renderer to be specified. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="a6317845b652e285dfae06df1b5bb321e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void renderer_set_draw_mode </td>
          <td>(</td>
          <td class="paramtype">enum DRAW_MODE_IDR&#160;</td>
          <td class="paramname"><em>draw_mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>set the expected draw mode to the renderer. </p>
<p>Note that: this function is only useful for the RENDERER_RASTERIZER renderer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">draw_mode</td><td>enum DRAW_MODE_IDR [in] draw mode selected. </td></tr>
    <tr><td class="paramname">rend</td><td>struct renderer* [out] renderer to be specified. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="a44a2f38c6fa52befe988e4c96814d4dd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void renderer_set_spec </td>
          <td>(</td>
          <td class="paramtype">enum RENDER_SPEC_IDR&#160;</td>
          <td class="paramname"><em>spec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>set the type of hardware will be used by the renderer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">spec</td><td>enum RENDER_SPEC_IDR [in] specification of the hardware. </td></tr>
    <tr><td class="paramname">rend</td><td>struct renderer* [out] renderer to be specified. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
<a class="anchor" id="a83867f64e582b941476feed388778a9b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void renderer_update </td>
          <td>(</td>
          <td class="paramtype">struct renderer *&#160;</td>
          <td class="paramname"><em>rend</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>update all the changes to the renderer. </p>
<p>Note that: this is an immediate operation. it also means this function is <em>NOT</em> thread-safe. any other member function call of the renderer class and changes to the renderable context and probe class during <a class="el" href="x3d_2renderer_8h.html#a83867f64e582b941476feed388778a9b" title="update all the changes to the renderer. ">renderer_update()</a> will result undefined behavior. As well, any changes made before this function call is not applied. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rend</td><td>struct renderer* </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_dc43877d82dd332f9fb2071fcca799d6.html">kernel</a></li><li class="navelem"><a class="el" href="kernel_2renderer_8c.html">renderer.c</a></li>
    <li class="footer">Generated on Sun Apr 13 2014 15:39:58 for x3dcore by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.4 </li>
  </ul>
</div>
</body>
</html>
